package com.jingxuan.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.jingxuan.common.result.Result;
import com.jingxuan.dto.response.RecommendProductsResponse;
import com.jingxuan.service.RecommendService;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@RestController
@RequestMapping("/recommend")
public class RecommendController {
    
    @Autowired
    private RecommendService recommendService;

    /**
     * 获取推荐商品列表
     *
     * 根据用户偏好标签和推荐算法计算，返回个性化推荐的商品列表。
     * 推荐算法考虑以下因素：
     *   价格评分：价格越低得分越高
     *   口碑评分：好评率越高得分越高
     *   热度评分：评论数和点赞数越多得分越高
     *   时效评分：最新评论时间越近得分越高
     *   标签匹配：与用户偏好标签匹配的商品额外加分
     *
     * @param limit 限制返回数量（可选，默认20，最大100）
     * @return 推荐商品列表
     */
    @GetMapping("/products")
    public Result<List<RecommendProductsResponse>> getRecommendProducts(
            @RequestParam(value = "limit", required = false) Integer limit) {
        log.info("获取推荐商品，请求参数：limit={}", limit);
        List<RecommendProductsResponse> recommendProducts = recommendService.getRecommendProducts(limit);
        return Result.success(recommendProducts);
    }

}